/**
 * 
 */
package com.designpattern.design.decorator.decorator;

import com.designpattern.design.decorator.Drink;

/**
 * 包装类-包装coffee
 * @author zhangyang
 *
 */
public class Decorator extends Drink {

	
	private Drink drink;
	/**
	 * 价格计算公式：由于是包装类 所以价格计算公式是自己的价格+包装前的花费
	 * 包装前的价格的价格有两种情况
	 *  1是基本的咖啡类那么就是coffee类的cost
	 * 2是基本咖啡经过包装产生的花费,那么就是Decorator的cost(原有的价格+包装价格)
	 * 	这里就是递归
	 * 例如:需要1份美式+2份巧克力+一份糖
	 * 那么产生的包装类就是blackCoffee+suger=Decorator1
	 * Decorator1+chol=Decorator2
	 * Decorator2+chol=Decorator3
	 */
	
	
	@Override
	public float cost() {
		// TODO Auto-generated method stub
		return super.getPrice()+drink.cost();
	}
	
	/**
	 * 组合drink
	 * @param drink
	 */
	public Decorator(Drink drink) {
		super();
		this.drink = drink;
	}



	@Override
	public String getDesc() {
		//获取组装后的描述性信息 重写方便检查是否组装进去
		return super.getDesc()+"__"+super.getPrice()+"__"+drink.getDesc();
	}

	
}
